// Generated from code/ch16/Cymbol.g by ANTLR 4.9.0-SNAPSHOT


import { ATN } from "antlr4ts/atn/ATN";
import { ATNDeserializer } from "antlr4ts/atn/ATNDeserializer";
import { CharStream } from "antlr4ts/CharStream";
import { Lexer } from "antlr4ts/Lexer";
import { LexerATNSimulator } from "antlr4ts/atn/LexerATNSimulator";
import { NotNull } from "antlr4ts/Decorators";
import { Override } from "antlr4ts/Decorators";
import { RuleContext } from "antlr4ts/RuleContext";
import { Vocabulary } from "antlr4ts/Vocabulary";
import { VocabularyImpl } from "antlr4ts/VocabularyImpl";

import * as Utils from "antlr4ts/misc/Utils";


export class CymbolLexer extends Lexer {
	public static readonly T__0 = 1;
	public static readonly T__1 = 2;
	public static readonly T__2 = 3;
	public static readonly T__3 = 4;
	public static readonly T__4 = 5;
	public static readonly T__5 = 6;
	public static readonly T__6 = 7;
	public static readonly ID = 8;
	public static readonly INT = 9;
	public static readonly WS = 10;
	public static readonly SL_COMMENT = 11;

	// tslint:disable:no-trailing-whitespace
	public static readonly channelNames: string[] = [
		"DEFAULT_TOKEN_CHANNEL", "HIDDEN",
	];

	// tslint:disable:no-trailing-whitespace
	public static readonly modeNames: string[] = [
		"DEFAULT_MODE",
	];

	public static readonly ruleNames: string[] = [
		"T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "ID", "LETTER", 
		"INT", "WS", "SL_COMMENT",
	];

	private static readonly _LITERAL_NAMES: Array<string | undefined> = [
		undefined, "'='", "';'", "'float'", "'int'", "'+'", "'('", "')'",
	];
	private static readonly _SYMBOLIC_NAMES: Array<string | undefined> = [
		undefined, undefined, undefined, undefined, undefined, undefined, undefined, 
		undefined, "ID", "INT", "WS", "SL_COMMENT",
	];
	public static readonly VOCABULARY: Vocabulary = new VocabularyImpl(CymbolLexer._LITERAL_NAMES, CymbolLexer._SYMBOLIC_NAMES, []);

	// @Override
	// @NotNull
	public get vocabulary(): Vocabulary {
		return CymbolLexer.VOCABULARY;
	}
	// tslint:enable:no-trailing-whitespace


	constructor(input: CharStream) {
		super(input);
		this._interp = new LexerATNSimulator(CymbolLexer._ATN, this);
	}

	// @Override
	public get grammarFileName(): string { return "Cymbol.g"; }

	// @Override
	public get ruleNames(): string[] { return CymbolLexer.ruleNames; }

	// @Override
	public get serializedATN(): string { return CymbolLexer._serializedATN; }

	// @Override
	public get channelNames(): string[] { return CymbolLexer.channelNames; }

	// @Override
	public get modeNames(): string[] { return CymbolLexer.modeNames; }

	public static readonly _serializedATN: string =
		"\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x02\rR\b\x01\x04" +
		"\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\x04" +
		"\x07\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r\t\r" +
		"\x03\x02\x03\x02\x03\x03\x03\x03\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04" +
		"\x03\x04\x03\x05\x03\x05\x03\x05\x03\x05\x03\x06\x03\x06\x03\x07\x03\x07" +
		"\x03\b\x03\b\x03\t\x03\t\x03\t\x07\t3\n\t\f\t\x0E\t6\v\t\x03\n\x03\n\x03" +
		"\v\x06\v;\n\v\r\v\x0E\v<\x03\f\x03\f\x03\f\x03\f\x03\r\x03\r\x03\r\x03" +
		"\r\x07\rG\n\r\f\r\x0E\rJ\v\r\x03\r\x05\rM\n\r\x03\r\x03\r\x03\r\x03\r" +
		"\x02\x02\x02\x0E\x03\x02\x03\x05\x02\x04\x07\x02\x05\t\x02\x06\v\x02\x07" +
		"\r\x02\b\x0F\x02\t\x11\x02\n\x13\x02\x02\x15\x02\v\x17\x02\f\x19\x02\r" +
		"\x03\x02\x06\x04\x02C\\c|\x03\x022;\x05\x02\v\f\x0F\x0F\"\"\x04\x02\f" +
		"\f\x0F\x0F\x02U\x02\x03\x03\x02\x02\x02\x02\x05\x03\x02\x02\x02\x02\x07" +
		"\x03\x02\x02\x02\x02\t\x03\x02\x02\x02\x02\v\x03\x02\x02\x02\x02\r\x03" +
		"\x02\x02\x02\x02\x0F\x03\x02\x02\x02\x02\x11\x03\x02\x02\x02\x02\x15\x03" +
		"\x02\x02\x02\x02\x17\x03\x02\x02\x02\x02\x19\x03\x02\x02\x02\x03\x1B\x03" +
		"\x02\x02\x02\x05\x1D\x03\x02\x02\x02\x07\x1F\x03\x02\x02\x02\t%\x03\x02" +
		"\x02\x02\v)\x03\x02\x02\x02\r+\x03\x02\x02\x02\x0F-\x03\x02\x02\x02\x11" +
		"/\x03\x02\x02\x02\x137\x03\x02\x02\x02\x15:\x03\x02\x02\x02\x17>\x03\x02" +
		"\x02\x02\x19B\x03\x02\x02\x02\x1B\x1C\x07?\x02\x02\x1C\x04\x03\x02\x02" +
		"\x02\x1D\x1E\x07=\x02\x02\x1E\x06\x03\x02\x02\x02\x1F \x07h\x02\x02 !" +
		"\x07n\x02\x02!\"\x07q\x02\x02\"#\x07c\x02\x02#$\x07v\x02\x02$\b\x03\x02" +
		"\x02\x02%&\x07k\x02\x02&\'\x07p\x02\x02\'(\x07v\x02\x02(\n\x03\x02\x02" +
		"\x02)*\x07-\x02\x02*\f\x03\x02\x02\x02+,\x07*\x02\x02,\x0E\x03\x02\x02" +
		"\x02-.\x07+\x02\x02.\x10\x03\x02\x02\x02/4\x05\x13\n\x0203\x05\x13\n\x02" +
		"13\x05\x15\v\x0220\x03\x02\x02\x0221\x03\x02\x02\x0236\x03\x02\x02\x02" +
		"42\x03\x02\x02\x0245\x03\x02\x02\x025\x12\x03\x02\x02\x0264\x03\x02\x02" +
		"\x0278\t\x02\x02\x028\x14\x03\x02\x02\x029;\t\x03\x02\x02:9\x03\x02\x02" +
		"\x02;<\x03\x02\x02\x02<:\x03\x02\x02\x02<=\x03\x02\x02\x02=\x16\x03\x02" +
		"\x02\x02>?\t\x04\x02\x02?@\x03\x02\x02\x02@A\b\f\x02\x02A\x18\x03\x02" +
		"\x02\x02BC\x071\x02\x02CD\x071\x02\x02DH\x03\x02\x02\x02EG\n\x05\x02\x02" +
		"FE\x03\x02\x02\x02GJ\x03\x02\x02\x02HF\x03\x02\x02\x02HI\x03\x02\x02\x02" +
		"IL\x03\x02\x02\x02JH\x03\x02\x02\x02KM\x07\x0F\x02\x02LK\x03\x02\x02\x02" +
		"LM\x03\x02\x02\x02MN\x03\x02\x02\x02NO\x07\f\x02\x02OP\x03\x02\x02\x02" +
		"PQ\b\r\x02\x02Q\x1A\x03\x02\x02\x02\b\x0224<HL\x03\b\x02\x02";
	public static __ATN: ATN;
	public static get _ATN(): ATN {
		if (!CymbolLexer.__ATN) {
			CymbolLexer.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(CymbolLexer._serializedATN));
		}

		return CymbolLexer.__ATN;
	}

}

